#ifndef HEXBOARD_H
#define HEXBOARD_H

#include <QWidget>
#include <QColor>

class HexBoard: public QWidget
{
    Q_OBJECT

private:
    // 棋盘大小
    int size = 11;
    // 每个格点的颜色
    QColor colors[20][20];
    // 每个格子的边长
    int a = 25;
    // 最左边格子中心的left，top
    int left = 50, top = 280;
    // 格子之间的空隙
    int gap = 2;

    bool displayAxis = true;
    bool countMove = true;

    void drawHexagon(QPainter & painter, double x, double y);

public:
    static const char PLAYER_RED = '1';
    static const char PLAYER_BLUE = '2';

    HexBoard(QWidget * parent = 0);
    ~HexBoard() override;

    // 设置棋盘大小
    void setSize(int size);
    // 获取棋盘大小
    int getSize();


    // 设置左端格子中心点在控件中的位置
    void setOrigin(int left, int top);
    // 根据二位坐标设置某点的颜色
    void setGridColor(int x, int y, QColor color);
    void setGridColor(int pos, QColor color);

    void init();

	void clearColor();

    void setDisplayAxis(bool val) { displayAxis = val; }
    void setCountMove(bool val) { countMove = val; }

protected:
    void paintEvent(QPaintEvent * event) override;
    void mousePressEvent(QMouseEvent * event) override;

signals:
    // 单击某格子（x，y）
    void click(int x, int y);
    // 棋盘发生变化
    void changed(int x, int y, char oldval, char newval);
};

#endif // HEXBOARD_H
